
/**
 * Created by Administrator on 2016/3/15.
 * 该包依赖包
 *      jQuery
 *      artTemplate
 *      jQuery-cookie
 *      json2
 */

//$(function(){
var isLog = false;
/**
 * 获取数据
 * @param url       数据来源
 * @param opation   传参
 * @param htmlurl   html数据显示地址
 * @param scripturl script模板地址
 * @param cookies   是否要进行cookie
 * @param callback  回调函数
 * @param isLog     是否打印日志(用于数据调试)
 */
function geetdata(url, opation, htmlurl, scripturl, cookies, isLog, callback) {
	printLog("geetdata",null, null, isLog);
	$.getJSON(url, opation, function(json){
		printLog("geetdata","getjson",json,isLog);
		view(json,  htmlurl, scripturl);
		if(cookies != '') {
			opation.pageCount = json.data.pageCount;
			opation.total = json.data.total;
			saveOpation(cookies, JSON.stringify(opation));
		}
		if(callback) {
			//alert(callback)
			callback();
		}
	})
}

/**
 * 页面显示数据
 * 目的：样式和数据分离
 * @param json      数据格式为json数据
 * @param htmlurl   html地址
 * @param scripturl script脚本地址
 */
function view(json, htmlurl, scripturl) {
	var $varietyContent = $(htmlurl),
		varietyHtml = template(scripturl, json);
	$varietyContent.html(varietyHtml);
	printLog("view", null, "页面数据渲染", isLog);
}

/**
 * 利用cookie保存翻页数据
 * @param name  cookie名称
 * @param value 分页数据
 */
function saveOpation(name, value) {
	$.cookie(name,value,{path:'/'});
	printLog("saveOpation", null, "翻页数据以保存"+value, isLog);
}
/**
 * 首页
 */
function fristPage(name, url, htmlurl, scripturl, cookies, isLog) {
	var value = $.cookie(name);
	var opation = JSON.parse(value);
	opation.pageNo = 1;
	geetdata(url, opation, htmlurl, scripturl, name, isLog);
	printLog("fristPage",null,opation, isLog);
}
/**
 * 上一页
 * @param name
 * @param url
 * @param htmlurl
 * @param scripturl
 * @param cookies
 * @param isLog
 */
function pre(name, url, htmlurl, scripturl, cookies, isLog) {
	var value = $.cookie(name);
	var opation = JSON.parse(value);
	if(opation.pageNo > 1) {
		opation.pageNo = opation.pageNo - 1;
	}
	geetdata(url, opation, htmlurl, scripturl, name, isLog);

	printLog("pre", null, "opation" + opation, isLog)
}

/**
 * 跳到n页
 */
function toPage(pageNo, name, url, htmlurl, scripturl, cookies, isLog) {
	var value = $.cookie(name);
	var opation = JSON.parse(value);
	opation.pageNo = pageNo;

	geetdata(url, opation, htmlurl, scripturl, name, isLog);
	printLog("toPage",null,opation, isLog);
}

/**
 * 下一页
 */
function next(name, url, htmlurl, scripturl, cookies, isLog) {
	var value = $.cookie(name);
	var opation = JSON.parse(value);
	if(opation.total%opation.pageSize == 0) {
		opation.pageCount = opation.total/opation.pageSize;
	}
	if(opation.pageNo < opation.pageCount) {
		opation.pageNo = opation.pageNo + 1;
	}

	geetdata(url, opation, htmlurl, scripturl, name, isLog);
	printLog("next",null, opation, isLog);
}

/**
 * 最后一页
 */
function lastPage(name, url, htmlurl, scripturl, cookies, isLog) {
	var value = $.cookie(name);
	var opation = JSON.parse(value);
	alert(value)
	opation.pageNo = opation.pageCount;
	geetdata(url, opation, htmlurl, scripturl, name, isLog);
	printLog("lastPage",null, opation, isLog);
}

/**
 * 获取图片地址
 */
function geetImg(imgUrl, n) {
	if(imgUrl == '') {
		return null;
	}
	if(n=='') {
		return imgUrl;
	}
	var imgurls = new Array();
	imgurls = imgUrl.split(',');
	if(n>imgurls.length+1) {
		alert('传递的参数有误,图片取数大于图片个数!\n注意：取数索引从1开始');
	} else {
		return imgurls[n-1];
	}
	return '';
}

/**
 * 打开新页面
 * @param url 网页地址
 * @param isNew 是否是新窗口打开
 */
function openUrl(url , isNew){
	if(isNew) {
		window.open(url);
	} else {
		window.location.href = url;
	}
	printLog("openUrl", null, url, isLog);
}

/**
 * 获取参数值
 * @returns {Object}    返回参数对象
 * 例如/index.html?id=123     用法是geetOpation()['id']
 */
function geetOpation() {
	var url=location.search;
	var Request = new Object();
	if(url.indexOf("?")!=-1){
		var str = url.substr(1);
		strs = str.split("&");
		for(var i=0;i<strs.length;i++){
			Request[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]);
		}
	}
	printLog("geetOpation", null, Request, isLog);
	return Request;

}

/**
 *  获取请求头里面参数的值
 * @param name      参数名
 * @returns {*}     对应的值
 *      例如：geetRequestValueByParameter('id');
 */
function geetRequestValueByParameter(name) {
	var opation = geetOpation();
	printLog("geetRequestValueByParameter", null,opation[name] , isLog)
	return opation[name];
}
/**
 * 打印日志模块
 * @param funName   函数名
 * @param block     模块名
 * @param result    执行结果
 * @param isLog     是否打印
 *      例如printLog(geetdata,getjson,null)   // 在geetdata中。。。
 */
function printLog(funName, block,result , isLog) {
	if(isLog) {
		var string = '';
		if(funName) {
			string += ('在' + funName + '函数中');
		}
		if(block) {
			string += ('在' + block + '函数中');
		}
		if(result) {
			string += ('执行结果为' + block + '');
		}
		console.info(string);
		if(result) {
			console.log("执行结果详情")
			console.info(result);
		}

	}

}
/**
 * 字数限制函数（用于截断文本）
 * @param content   需截断的原始文本
 * @param n         要截断的个数
 * @returns {*}     截断结果...
 */
function wordLimit(content, n) {
	if(content == '') {
		return null;
	}else if(content.length < n){
		return content;
	} else {
		return content.substring(0,n)+"...";
	}
}

(function(){    /* 添加时间原型，用于格式化代码 */
	Date.prototype.format =function(format)
	{
		var o = {
			"M+" : this.getMonth()+1, //month
			"d+" : this.getDate(), //day
			"h+" : this.getHours(), //hour
			"m+" : this.getMinutes(), //minute
			"s+" : this.getSeconds(), //second
			"q+" : Math.floor((this.getMonth()+3)/3), //quarter
			"S" : this.getMilliseconds() //millisecond
		}
		if(/(y+)/.test(format)) format=format.replace(RegExp.$1,
			(this.getFullYear()+"").substr(4- RegExp.$1.length));
		for(var k in o)if(new RegExp("("+ k +")").test(format))
			format = format.replace(RegExp.$1,
				RegExp.$1.length==1? o[k] :
					("00"+ o[k]).substr((""+ o[k]).length));
		return format;
	}


})();
var byTime = [365*24*60*60*1000,24*60*60*1000,60*60*1000,60*1000,1000];
var unit = ["年","天","小时","分钟","秒钟"];

function geetDay(atime){/* 几天前 */

	var ct = new Date().getTime()-new Date(atime).getTime();
	if(ct<0){
		return "瞎糊闹！"
	}

	var sb = [];
	for(var i=0;i<byTime.length;i++){
		if(ct<byTime[i]){
			continue;
		}
		var temp = Math.floor(ct/byTime[i]);
		ct = ct%byTime[i];
		if(temp>0){
			sb.push(temp+unit[i]);
		}


		/*一下控制最多输出几个时间单位：
		 一个时间单位如：N分钟前
		 两个时间单位如：M分钟N秒前
		 三个时间单位如：M年N分钟X秒前
		 以此类推
		 */
		if(sb.length>=1){
			break;
		}
	}
	return (sb.join("")+"前");
}

/**
 * 格式化时间代码
 * @param name  模板名字
 * @param date  时间字符串
 *      例如 2016-03-16
 */
function getdateByString(date,name) {
	if(isFirefox=navigator.userAgent.indexOf("Firefox")>0){
		date = date.replace(' ', 'T');
	}
	if ((navigator.userAgent.indexOf('MSIE') >= 0)
		&& (navigator.userAgent.indexOf('Opera') < 0)){
		date = date.replace(' ', 'T');
	}
	if(date.indexOf('-') == -1) {
		return date;
	}
	var temp = new Date(date);
	return temp.format(name);
}
/**
 * 调用示例：
 * 1.截断文字内容
 *     例如：{{value.summary | wordLimit:'30'}}
 */
template.helper("wordLimit", wordLimit);

/**
 * 调用示例：
 * 2.改变图片选取位置
 *      例如{{value.imgUrl | geetImgByIndex:'1'}}"
 */
template.helper("geetImgByIndex", geetImg);

/**
 * 调用示例：
 * 3.改变时间格式
 *      例如{{value.Create | getDate:'yyyy-MM-dd'}}"
 *          {{value.Create | getDate:'yyyy-MM-dd hh:mm:ss'}}"
 */
template.helper("getDate", getdateByString);
/**
 * 调用示例：
 * 4.改变时间显示
 *      例如{{value.Create | getDate:'yyyy-MM-dd'}}"
 *          {{value.Create | getDate:'yyyy-MM-dd hh:mm:ss'}}"
 *      例如 {{value.Create | getDate:'yyyy-MM-dd hh:mm:ss'}}"   {value.Create | getDate:'yyyy-MM-dd hh:mm:ss'}}"
 */
template.helper("geetDay", geetDay);

//});
